#include<stdio.h>
#include<string.h>
#define MAXN 110000
#define MAXL 990000
int prime[MAXN], flag[MAXL]; //prime为存质数的数组，flag为标记自然数是否为质数的数组
int count; //计数器
void init()
{
    count = 0;
    memset(flag, 0, sizeof(flag));
    int i, j;
    for(i=2; i<=MAXL; i++)
    {
        if(flag[i] == 0) //遍历到未经处理过的自然数
        {
            prime[count++] = i; //在数组prime中存下质数
            for(j=i+i; j<=MAXL; j+=i)
            {
                flag[j] = 1; //标记i的所有倍数都为合数
            }
        }
    }
    return ;
}
int main()
{
    int i,n,m;
    init();
    while(~scanf("%d",&n))
    {
        m = 0;
        for(i=0; prime[i]<n; i++)
        {
            m++;
            printf("%d ", prime[i]);
        }
        printf("\nprime quantity until %d = %d\n", n, m);
    }
    return 0;
}
